The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time computers have become indispensable in many fields of human endeavor including engineering design, machine and process control, and information storage and access. In the early days of computers, companies such as banks, industry, and the government would purchase a single computer which satisfied their needs, but by the early 1950's many companies had multiple computers and the need to move data from one computer to another became apparent. At this time computer networks began being developed to allow computers to work together.
Computer networks are capable of performing jobs that no single computer could perform and they allow low cost personal computer systems to connect to larger systems to perform tasks that such low cost systems could not perform alone. In order for computer systems to cooperate in a network to perform some complex job, software must be developed which efficiently delegates parts of the chore or tasks to different computers in the network. One of the recent advances in the field of software development has been the emergence of object oriented programming technology.
The goal of using object-oriented programming is to create small, reusable sections of program code known as objects that can be quickly and easily combined and re-used to create new programs. This is similar to the idea of using the same set of building blocks again and again to create many different structures. The modular and re-usable aspects of objects typically speeds development of new programs, thereby reducing the costs associated with the development cycle. In addition, by creating and re-using a group of well-tested objects, a more stable, uniform, and consistent approach to developing new computer programs can be achieved.
Although object-oriented programming offers significant improvements over other programming types, program development still requires significant amounts of time and effort, especially if no preexisting objects are available as a starting point. Consequently, one approach has been to provide a program developer with a set of pre-defined, interconnected classes that create a set of objects. Such pre-defined classes and libraries are typically called object frameworks. Frameworks essentially provide a prefabricated structure for a working program by defining certain classes, class relationships, and methods that a programmer may easily use by appropriate subclassing to generate a new object-oriented program.
One significant computer network that has recently become very popular is the Internet. The Internet grew out of this proliferation of computers and networks, and has evolved into a sophisticated worldwide network of computer systems. Using the Internet, a user may access computers all over the world from a singie workstation. The widespread acceptance and use of the Internet has prompted businesses to offer a wide variety of products and services via the Internet. Many businesses now offer on-line catalogs that allow a customer to browse through product listings and place an order electronically by selecting products and submitting an order. Other companies offer electronic catalogs on floppy disk or CD-ROM that allow a user to browse through product selections and place an order. Any catalog that is displayed to a user on a computer system is referred to generically herein as an electronic catalog.
Most on-line catalogs are developed using a web document development tool. This approach has several drawbacks. First, using a web document development tool limits the user interface to a format that is accepted for web documents, such as HyperText Markup Language (HTML). If the catalog system has a user interface that is only compatible with web documents, the same user interface could typically not be used for both web and non-web access to the catalog. A separate user interface for non-web access would have to be developed. A second disadvantage of using a web document development tool to develop an on-line catalog is accessing critical data, such as price, product descriptions, etc. There are many different ways this problem may be addressed. The first is to allow the catalog system to access data in specific data storage mechanisms (such as relational databases) where the master copy of the data resides. This solution requires the on-line catalog to build data access programs to access the data in its home location and to possibly convert the data to HTML format. Another alternative is to maintain multiple master copies of critical data in multiple locations and possibly in different formats so that the catalog program can access the data it needs in a know location and in a known format. This solution eliminates the need for special data access programs, since data may be accessed in a local datastore that the catalog may easily access in a known format, but maintaining multiple master databases requires each change to any datastore to be reflected in the others. A third disadvantage of presently known on-line catalogs is that each catalog is typically custom-developed according to the specific needs and requirements of the company, the products offered, etc. As a result, existing on-line catalogs are not well-suited to being adapted to create a new and different on-line catalog. In addition, custom-developing an on-line catalog may require substantial work to convert the on-line catalog to a different form that may be distributed on disk or CD-ROM.
Most electronic catalogs share a host of common functions and features, but there has been no mechanism developed to allow a programmer to take advantage of these similarities in developing an electronic catalog or in developing a tool for creating an electronic catalog. Without a mechanism that can be readily customized and extended to provide an electronic catalog or catalog development tool, companies that provide electronic catalogs will needlessly expend considerable time and resources in developing custom electronic catalogs.